<?php

abstract class AdminImageController extends BaseController {
    
    public $tablaPivot; // ej: imageapa_apartment
    public $campoIdImagen; // ej: imageobj_id
//    public $modelImagen; // ej: Imageapa
//    public $vistaEdit = 'admin.imagenes.edit'; // ej: views/admin.imagenes.edit
//    private $campoIdentidad; //ej: objeto_id
    public $entidad;
    
    
    
//    public function setTablaPivot($valor){
//        $this->tablaPivot = $valor;
//    }
   

//    public function __construct(){
////        $this->vistaEdit = 'admin.imagenes.edit';
//    }
    
    public function ordenar() {
        $images = Input::get('items');    
        DB::transaction(function($images) use ($images) {
            foreach ($images as $posicion => $id) {
                DB::table( $this->tablaPivot )
                    ->where( $this->campoIdImagen, '=', $id)
                    ->update(['position' => $posicion]);
            }
        });
    }

    public function edit($id){
        return View::make($this->vistaEdit,['image' => $this->findImagen($id), 'entidad' => $this->entidad]);
    }
    
    public function update($id) {
        $title = Input::get('title');
        $image = $this->findImagen($id);
        $image->title = $title;
        $image->save();
        
        Session::flash('message', 'Edición de imagen exitosa');
        return Redirect::to(URL::previous() . '#list_images');
    }
    
    public function destroy($id) {

        $image = $this->findImagen($id);
        $idEntidadRelacionada = $image->getEntityId();
        $positionImagen = $image->getPosition();

        DB::transaction(function() use ($image, $idEntidadRelacionada, $positionImagen) {

            DB::table( $this->tablaPivot)
                    ->orderBy('position')
//                    ->where($this->entidad.'_id', '=', $image->id)
                    ->where($this->entidad.'_id', '=', $idEntidadRelacionada)
                    ->where('position', '>', $positionImagen)
                    ->decrement('position');

            $image->delete();
        });

        // redirect
        Session::flash('message', 'Eliminación exitosa');
        return Redirect::to(URL::previous() . '#list_images');
    }

}
